package com.yifan.functionInterface;

import sun.misc.Unsafe;

import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @Author YIFan
 * @Date 2020/10/13 11:30
 * @Version 1.0
 * 函数式接口
 */
public class SFunctionTest {

    public static void main(String[] args) {

//        /*曾经是使用for获取*/
//        for (int i = 0; i < list.size(); i++) {
//            // 业务逻辑
//            System.err.println(list.get(i));
//        }
//        System.err.println("------------------");
//        System.out.println(list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.joining("❤")));

        List<String> names = Arrays.asList("peter", "anna", "mike", "xenia");
        List<String> collect = names.stream().map(i -> i+"@").collect(Collectors.toList());
        System.err.println(collect.toString());

        names.stream().filter(i -> i.equals("mike")).forEach(s-> System.err.println(s.toString()));

        Stream.of(5, 4, 3, 2, 1).sequential()
                .sorted().forEach(System.out::print);
        // 打印结果
        // 1，2，3,4,5

        System.err.println("---");
        names.stream().filter(i->i.contains("a")).forEach(s-> System.err.println(s));

        Predicate<Integer> predicate = x -> x > 5;
        Predicate<Integer> p = x -> x < 10;
        System.err.println(predicate.and(p).test(8)); // true 10>8>5



        for (int i = 0; i < 100; i++) {
            List<String> list1 = new ArrayList<>();
            List<String> list2 = new ArrayList<>();
            list1.add("a");
            list1.add("b");
            list1.add("c");
            list1.add("d");
            list1.parallelStream().forEach(list->list2.add(list));
            System.out.println("------>"+list2.size());
        }


    }
}
